package pers.xds.wtuapp.web.service;

import org.jetbrains.annotations.Nullable;
import pers.xds.wtuapp.web.database.bean.Acquisition;
import pers.xds.wtuapp.web.database.view.AcquisitionQuery;
import pers.xds.wtuapp.web.es.bean.EsAcquisition;

import java.util.List;

/**
 * @author DeSen Xu
 * @date 2023-02-16 17:17
 */
public interface AcquisitionService {

    /**
     * 添加一条收购订单
     * @param acquisition 收购订单
     * @return 收购订单id
     */
    int postAcquisition(Acquisition acquisition);


    /**
     * 下架商品
     * @param acquisitionId 收购订单id
     * @param ownerId 发布者id
     * @throws pers.xds.wtuapp.web.service.exception.NoSuchElementException 收购订单不存在
     */
    void takeDown(int acquisitionId, int ownerId);

    /**
     * 查询最新的收购订单
     * @param maxId 收购订单id的最大值. 传入null直接查询最新的
     * @param size 查询数量
     * @return 收购订单
     */
    List<AcquisitionQuery> queryList(Integer maxId, int size);

    /**
     * 根据id查询收购订单信息
     * @param acquisitionId 收购订单id
     * @return 收购订单
     */
    @Nullable
    Acquisition queryById(int acquisitionId);


    /**
     * 根据订单是否激活来查询某个用户的收购订单
     * @param uid 用户id
     * @param isActive 是否激活
     * @param page 第几页，从1开始
     * @param size 每页大小
     * @return 查询结果
     */
    List<Acquisition> queryByActive(int uid, boolean isActive, int page, int size);

    /**
     * 根据标题搜索相关的收购订单
     * @param title 要搜素的标题
     * @param page 第几页，从1开始
     * @param size 每页大小
     * @return 搜索结果
     */
    List<EsAcquisition> searchByTitle(String title, int page, int size);


}
